UNIDAD II.
"GENERACIÓN DE CÓDIGO INTERMEDIO"
La mayoría de los compiladores generan código como parte del proceso de análisis sintáctico,
esto es debido a que requieren del árbol de sintaxis y si este no va a ser construido físicamente,
entonces deberá acompañar al analizador sintáctico al barrer el árbol implícito.
En lugar de generar código ensamblador directamente, los compiladores generan un código intermedio
que es más parecido al código ensamblador, las operaciones por ejemplo nunca se hacen con más de
dos operandos.
Al no generarse código ensamblador el cual es dependiente de la computadora especifica, sino código
intermedio, se puede reutilizar la parte del compilador que genera código intermedio en otro compilador
para una computadora con diferente procesador cambiando solamente el generador de código ensamblador
al cual llamamos back-end, la desventaja obviamente es la lentitud que esto conlleva.
La tarea de síntesis suele comenzar generando un código intermedio.
El código intermedio no es el lenguaje de programación de ninguna máquina real, sino que corresponde
a una máquina abstracta, que se debe de definir lo más general posible, de forma que sea posible
traducir este código intermedio a cualquier máquina real.
El objetivo del código intermedio es reducir el número de programas necesarios para construir
traductores, y permitir más fácilmente la transportabilidad de unas máquinas a otras. Supóngase
que se tienen n lenguajes, y se desea construir traductores entre ellos. Sería necesario construir
n*(n-1) traductores.
Sin embargo, si se construye un lenguaje intermedio, tan sólo son necesarios 2*n traductores.
Así por ejemplo un fabricante de compiladores puede construir un compilador para diferentes
máquinas objeto con tan sólo cambiar las dos últimas fases de la tarea de síntesis.
- Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico.
- El análisis semántico utiliza como entrada el árbol sintáctico detectado por el análisis sintáctico para comprobar restricciones de tipo y otras limitaciones semánticas y preparar la generación de código.
- En compiladores de un solo paso, las llamadas a las rutinas semánticas se realizan directamente desde el analizador sintáctico y son dichas rutinas las que llaman al generador de código.
- El instrumento más utilizado para conseguirlo es la gramática de atributos.

"TEMARIO UNIDAD II."
